1. Field of the Invention
This invention relates to computer systems, and more particularly to organizing rules for evaluation by a rules engine.
2. Description of the Related Art
Businesses often realize cost reductions and efficiencies by automating process flows. For example, replacing manual processes (e.g., data entry, error diagnosis and correction) with automated processes provided by a computer system may lead to reduced business costs and smaller decision making cycles. Such automated processes are typically modeled and represented as rules separate from software code. The key underlying technology is typically a rules engine. The rules engine may be used to interpret and evaluate if-then statements that are often referred to as rules. The “if” portion of a rule may include conditions (e.g., amount greater than $100) and the then portion of rules may include actions (e.g., set discount to 5%). The inputs to the rules engine may be a collection of rules (e.g., rule set, rule execution set) and some information often referred to as facts (e.g., an actual amount such as $5.00). The outputs from a rules engine are generally determined by the facts and may include the original facts with possible modifications, new facts or some other computer system action (e.g., send an email, create new output, correct a problem) as a result of performing the specified actions of a rule.
Automated processes of businesses are sometimes difficult to model and may frequently change. For example, processes may evolve and rules that make a certain operation possible may become outdated due to an emerging technology. Rules are often used for many interconnected purposes. For example, rules may be reaction rules (e.g., when critical alarms on a network occur, pinpoint each critical alarm and recommend the best action) that when changed (e.g., modified, removed) may impact other rules. The conventional way of viewing the organization of rules is similar to a set of if-then statements.
Rules conventionally fire or execute in a sequence. For example, the condition of rule one is evaluated and if satisfied, the action of rule one is then executed and the condition of rule two is evaluated and if satisfied, the action of rule two is executed, and so forth. As rules sometimes change frequently and are often interconnected, maintenance of such rules may be difficult. For example, several rules may be highly dependent on a certain rule and removing the rule may require changes to each of the several rules and potentially even the computer system itself.
The organization of rules may also impose constraints on run-time evaluation of the rules. Computer systems that have the capacity to analyze data and draw inferences (e.g., rules engine) often rely heavily on pattern-matching algorithms. Rules may be part of numerous searches involving a many-to-many match among patterns identified in rules and facts. Considering the potential multitude of rules and facts, the number of rules evaluated may increase. For example, each set of if-then statements may be evaluated more than once although many of the rules may rely on the same condition that has already been tested.